#include <iostream>
#include <stdio.h>
#include <vector>
#include <stack>
using namespace std;

struct ListNode
{
    int val;
    struct ListNode *next;
    ListNode(int x):val(x),next(NULL)
    {}
};
vector<int> printListTailToHead(ListNode * head)
{
    vector<int> ret;
    stack<ListNode *> stac;
    if(head==NULL)
    {
        return  ret;
    }
    ListNode *cur=head;
    //将所有元素都入栈
    while(cur!=NULL)
    {
        stac.push(cur);
        cur=cur->next;
    }
    while(stac.size())
    {
        ret.push_back(stac.top()->val);    
        stac.pop();
    }
    return ret;
}


void test()
{
    
    ListNode *pos_1=new ListNode(1);
    ListNode *pos_2=new ListNode(2);
    ListNode *pos_3=new ListNode(3);
    ListNode *pos_4=new ListNode(4);
    ListNode *pos_5=new ListNode(5);
    ListNode *pos_6=new ListNode(6);
    pos_1->next=pos_2;
    pos_2->next=pos_3;
    pos_3->next=pos_4;
    pos_4->next=pos_5;
    pos_5->next=pos_6;
    pos_6->next=NULL;
    vector<int> v1=printListTailToHead(pos_1);
    int i=0;
    int len=v1.size();
    for(i=0;i<len;i++)
    {
        printf("%d ",v1[i]);
    }
    printf("\n");
}


int main()
{
    test();
    return 0;
}
